package com.bot.nft.module.op.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bot.nft.module.dc.domain.bo.DcNftCertBo;
import com.bot.nft.module.dc.domain.vo.DcNftCertVo;
import com.bot.nft.module.op.domain.bo.OpTreChestInfoBo;
import com.bot.nft.module.op.domain.vo.OpTreChestInfoVo;
import com.bot.nft.module.op.domain.vo.OpTreChestLogVo;
import com.bot.nft.module.op.domain.vo.OpTreChestOpRemarkVo;

import java.util.List;

/**
 * 描述:宝箱活动业务接口，包含新增，启用，积分抽奖等核心业务功能<br>
 * <p>
 * 时间: 2023-11-23 09:52<br>
 * 负责人: .
 **/
public interface IOpTreChestService {

    /**
     * 新增宝箱活动功能接口
     *
     * @param opTreChestBo 宝箱活动信息
     * @return Boolean 成功,true/失败,false
     */
    public Boolean addTreChest(OpTreChestInfoBo opTreChestBo);

    /**
     * 查询宝箱活动信息功能接口
     *
     * @param keyword  关键字
     * @param status   宝箱活动状态
     * @param pageNo   当前第几页
     * @param pageSize 每页显示条数
     * @return PageInfo<OpTreChestVo> 分页信息
     */
    public Page<OpTreChestInfoVo> queryTreChestByPage(String keyword, Integer status, Integer pageNo, Integer pageSize);

    /**
     * 启用宝箱活动功能接口
     *
     * @param id 宝箱活动信息标识
     * @return Boolean 成功,true/失败,false
     */
    public Boolean startTreChest(String id);

    /**
     * 停用宝箱活动功能接口
     *
     * @param id 宝箱活动信息标识
     * @return Boolean 成功,true/失败,false
     */
    public Boolean stopTreChest(String id);

    /**
     * 查看宝箱活动功能接口
     *
     * @param id 宝箱活动标识
     * @return OpTreChestVo 宝箱活动信息
     */
    public OpTreChestInfoVo getTreChest(String id);

    /**
     * 删除宝箱活动功能接口
     *
     * @param id 宝箱活动信息标识
     * @return Boolean 成功,true/失败,false
     */
    public Boolean delTreChest(String id);

    /**
     * 编辑宝箱活动信息功能接口
     *
     * @param opTreChestBo 宝箱活动信息
     * @return Boolean 成功，true/失败，false
     */
    public Boolean updateTreChest(OpTreChestInfoBo opTreChestBo);

    /**
     * 积分抽奖
     *
     * @param mbId  会员标识
     * @param treId 宝箱活动标识
     * @return 藏品信息
     */
    public DcNftCertVo inteTreChest(String mbId, String treId);

    /**
     * 藏品抽奖
     *
     * @param dcNftCertBos 藏品证书信息*
     * @param mbId         会员标识
     * @param treId        宝箱活动标识
     * @return 藏品证书信息
     */
    public DcNftCertVo nftTreChest(List<DcNftCertBo> dcNftCertBos, String mbId, String treId);

    /**
     * 查询宝箱抽奖记录功能接口
     *
     * @param treId   宝箱活动标识
     * @param mbId    会员标识
     * @return List<TreChestLogVo> 抽奖记录模型类
     */
    public List<OpTreChestLogVo> getTreChestLog(String treId, String mbId);

    /**
     * 运营端查询此次活动的抽奖记录
     *
     * @param keyword  关键字
     * @param treId    宝箱活动标识
     * @param pageNo   当前页
     * @param pageSize 每页显示条数
     * @return 分页信息
     */
    public Page<OpTreChestOpRemarkVo> queryDrawLog(String keyword, String treId, Integer pageNo, Integer pageSize);


    /**
     * 根据会员标识与藏品标识查出会员的藏品信息*
     * @param mbId 会员标识
     * @param nftId 藏品标识
     * @return 藏品信息*
     */
    public List<DcNftCertVo> getCertInfo(String mbId, String nftId);

}
